package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.rep.manifestrep.manifestcntr.ManifestCntrCreateReqVO;
import com.cmc.cloud.cmclink.doc.api.document.rep.manifestrep.manifestcntr.ManifestCntrEdiBaseVO;
import com.cmc.cloud.cmclink.doc.api.document.rep.manifestrep.manifestcntr.ManifestCntrRespVO;
import com.cmc.cloud.cmclink.doc.api.document.rep.manifestrep.manifestcntr.ManifestCntrUpdateReqVO;
import com.cmc.cloud.cmclink.doc.entity.ManifestCntrDO;
import com.cmc.cloud.cmclink.doc.vo.manifestvo.manifestcntr.ManifestCntrExportCnVo;
import com.cmc.cloud.cmclink.doc.vo.manifestvo.manifestcntr.ManifestCntrExportEnVo;
import com.cmc.cloud.cmclink.doc.vo.manifestvo.manifestcntr.ManifestCntrImportVo;
import com.cmc.cloud.cmclink.doc.vo.manifestvo.manifestcntr.ManifestCntrLclRespVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 舱单箱信息 Convert
 *
 * @author chenzheng
 */
@Mapper
public interface ManifestCntrConvert {
    /**
     * 获取转换接口的实例
     */
    ManifestCntrConvert INSTANCE = Mappers.getMapper(ManifestCntrConvert.class);

    /**
     * 将创建请求VO转换为DO
     *
     * @param bean 创建请求VO
     * @return DO
     */
    ManifestCntrDO convert(ManifestCntrCreateReqVO bean);

    /**
     * 将更新请求VO转换为DO
     *
     * @param bean 更新请求VO
     * @return DO
     */
    ManifestCntrDO convert(ManifestCntrUpdateReqVO bean);

    /**
     * 将更新请求VO转换为DO
     *
     * @param bean 更新请求VO
     * @return DO
     */
    List<ManifestCntrDO> convertUpdateList(List<ManifestCntrUpdateReqVO> bean);

    /**
     * 将DO转换为查询响应VO
     *
     * @param bean DO
     * @return VO
     */
    ManifestCntrRespVO convert(ManifestCntrDO bean);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param list DO列表
     * @return VO List
     */
    List<ManifestCntrRespVO> convertList(List<ManifestCntrDO> list);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param list DO列表
     * @return VO List
     */
    List<ManifestCntrEdiBaseVO> convertEdiList(List<ManifestCntrLclRespVO> list);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param list DO列表
     * @return VO List
     */
    List<ManifestCntrDO> convertImportList(List<ManifestCntrImportVo> list);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param list DO列表
     * @return VO List
     */
    List<ManifestCntrExportCnVo> convertExportCnList(List<ManifestCntrImportVo> list);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param list DO列表
     * @return VO List
     */
    List<ManifestCntrExportEnVo> convertExportEnList(List<ManifestCntrImportVo> list);

}
